package com.cy.pj.sys.dao;

import com.cy.pj.common.entity.SysMenu;
import com.cy.pj.common.vo.Node;
import com.cy.pj.sys.entity.SysUserMenu;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface SysMenuDao {
    // 查询
    List<Map<String,Object>> findObjects();

    //删除
    int getChildCount(Integer id);//基于菜单id查询子菜单记录的方法
    int deleteObject(Integer id);

    //新增
    List<Node> findZtreeMenuNodes();
    int insertObject(SysMenu entity);

    //修改
    int updateObject(SysMenu entity);

    List<String> findPermissions(List<Integer> menuIds);

    /*基于用户id查询用户拥有访问权限的一级和二级菜单
    *FAQ:如何基于用户id找到菜单相关的信息
    *1）用户表与菜单表没有直接关系
    * 2）可以通过用户角色关系表找到找到用户对应角色id
    *3)基于角色id可以从角色菜单关系表获取角色对应的菜单信息
    *4)获取到了菜单id就可以在菜单表中获取菜单相关信息了
    */
    List<SysUserMenu> findMenusByIds(@Param("menuIds") List<Integer> userId);
}
